This invention relates to a voice processing system, and more particularly, to an improved call processing architecture that permits fault tolerance at server and/or resource levels.
Voice processing systems have become prevalent in modern day society. Such systems typically involve a telephone caller dialing into a computerized integrated voice response (IVR) system. The interaction between the remote user dialing in and the computerized system varies widely and is application specific. Typical examples of such systems include banking systems which allow a user to transfer funds between accounts and ascertain account balances, credit card corporation systems, etc.
Recently, it has also become popular to merge together these voice processing systems with facsimile, e-mail, voice mail and other capabilities. One such example is what is termed fax-on-demand. In fax-on-demand systems, a remote user dials in to a computer and enters through his telephone keypad the digits corresponding to a particular item or product number. Additionally, a facsimile number may be entered via a touch tone keypad, and is interpreted by this system. The fax-on-demand system then transmits documentation regarding the particular item or product to a facsimile machine located at the specified remote telephone number.
In view of the evolving and complex nature of many of today""s modern voice processing systems, it has become standard to construct such voice processing systems from a plurality of different client applications. The voice processing applications may include fax-on-demand, voice mail, etc., all interconnected via a local area network or other such means.
It has also become fairly standard to utilize voice processing resources flexibly between calls. For example, typical voice processing resources include such items as tone detectors for detecting the digits entered via a DTMF keypad, echo cancellors for filtering echo from the telephone network, voice recognition software for allowing a remote user to input commands via voice, etc.
One problem comes from the need of high reliability at the server level. Fault tolerance at the computer telephony server, which communicates between the voice processing applications and the voice processing resources, is becoming more and more necessary as many services are integrated together to deal with different kinds of call requests, some of which require a high level of reliability.
The other problem comes from the fact that multiple vendors each implement their systems differently, the voice processing applications, as well as the resources, tend to vary widely in their design and implementation. Such systems are not very flexible because there usually exists a set of circuit boards on a single platform for implementing all of the required call processing functions. Once one of the required resources on the platform operates, improperly, or one or some of the resources on the platform are used up, the calls simply cannot be processed and are instead stopped or blocked. This problem is becoming more serious with the fact that more and more services tend to be integrated together to meet the different requests from a caller in a single call.
In view of the foregoing, there exists a need in the art for a more reliable voice processing system which has fault tolerance at the server level and the resource level. The system should also be flexible and configurable so as to optimally utilize the resources of a variety of different vendors in a variety of different configurations.
The above and other problems of the prior art are overcome and a technical advance is achieved in accordance with the present invention which relates to a two-tier fault tolerant voice processing system. In accordance with the invention, a plurality of call processing resources are arranged on various circuit boards (i.e., voice processing cards). Such boards are installed into a plurality of particular voice processing platforms. A plurality of voice processing applications, possibly running on different computers, communicates with a plurality of processors which co-operate on at least one CT server.
Each processor includes one or more primary functional components carrying out respective specific functions required for call processing. Each of the primary functional components is covered by a standby component which will operate if said each functional component stops operating. Thus, the functional components at the server level (Tier 1) achieve fault tolerance through redundancy.
The resources may be from different vendors, from the same or different voice processing boards, and from the same or different voice processing platforms. When a resource required by a particular call stops operating, the server may reallocate a substitute one from all the remaining operable resources on all the platforms so that a fault tolerance at the resources is achieved and the call may continue without interruption. Thus, at the resource level, N+1 redundancy is achieved.
In a preferred embodiment, there are at least two servers, and each of the functional components and its standby component are located in different servers. In such a case, when a server stops operating, the corresponding standby components on other server or servers begin to work and take over all the functions previously carried out by the components on the stopped server. The functionality of the faulty server is preferably divided among the remaining servers.
In a further embodiment, each of the servers has some primary functional components and some standby functional components, but any of the primary components and its standby one are not located at the same server. The loads of the system are shared by all servers, each carrying out different functions.
Fault tolerance is achieved at the server level by shadowing between the primary functional components and their standby counterparts, and at the resource level as N+1 redundancy (i.e., allowing the system to simply diminish the total resource pool but not become inoperable as resources fail). Additionally, the system capacity may be increased by simply adding resources at the resource level and by increasing the number of processors on the CT servers.
In a preferred embodiment, calls may be processed by allocating resources in a preferred priority scheme. This scheme is optimal and may take into account the factors such as the location of the resources, the traffic patterns, the scarcity of certain resources, etc.